Swift Docs 17. 타입 캐스팅(Type Casting) 타입 캐스팅은 인스턴스 타입을 확인하거나 해당 인스턴스를 자체 클래스에서 다른 상위 클래스나 하위 클래스로 취급하는 방법이다. 타입캐스팅을 사용하여 프로토콜을 준수하는지 확인도 가능하다. 클래스와 하위 클래스의 계층도 타입 캐스팅을 사용해서 특정 클래스의 인스턴스 타입을 확인하고 같은 계층 내에서 다른 클래스로 인스턴스 캐스트도 가능하다. 인스턴스가 특정 하위 클래스 타입인지 확인하기 위해서... Swift DocsType CastingSwift Docs 8-2. 연관된 값, 원시 값, 재귀 열거형 경우에 따라서 케이스 값과 함께 다른 타입의 값을 저장할 수 있는 것이 유용할 때가 있다. 이를 연관된 값이라고 하고 케이스를 코드에서 값으로 사용할때마다 달라진다. 아래 예시코드를 통해 확인한다. 위의 연관된 값(Associated Values)는 열거형 케이스에 다른 타입의 연관된 값을 저장한다고 선언하는 방법을 보여줬다. 이에 대한 다른 방법으로 열거형 케이스는 모두 동일한 타입의 기본... Swift DocsEnumerationsEnumerations 9-1. 구조체와 클래스 비교, 구조체 개념(struct) 구조체와 클래스는 프로그램 코드의 구성요소가 되는 범용 구조이다. 상수, 변수, 그리고 함수를 정의하는 것과 같은 구문을 사용해서 구조체와 클래스에 프로퍼티와 메서드를 기능적으로 추가할 수 있다. 스위프트에서 클래스는 객체보다 좀 더 일반적인 인스턴스라는 용어를 사용한다. 스위프트에서 구조체와 클래스는 공통점이 많다. 값을 저장하는 프로퍼티 정의(Property) 기능 제공을 위한 메서드 정... Swift DocsstructSwift Docs 9-2. 클래스(class) 클래스는 참조타입이다. 값 타입과 반대로 참조타입은 변수 또는 상수에 할당되거나 함수로 전달될 때 복사되지 않는다. 복사본 대신 존재하는 같은 인스턴스에 대한 참조가 사용된다. 클래스는 참조 타입이므로 클래스의 같은 단일 인스턴스에 참조하는 여러개의 상수와 변수가 가능하다. 구조체와 열거형은 상수, 변수 및 함수에 전달될 때 항상 복사되므로 클래스와 다르다. 상수들이 같은 인스턴스를 참조하는... Swift DocsclassSwift Docs 10-3. 전역과 지역변수(Global and Local Variables) 프로퍼티를 계산하고 관찰하기 위해 이전에 설명한 기능들은 전역변수와 지역변수에서도 사용 가능하다. 전역변수는 함수, 메서드, 클로저, 또는 타입 컨텍스트의 외부에 정의된 변수이다. 지역변수는 함수, 메서드 등의 내부에 정의된 변수이다. 저장된 프로퍼티처럼 저장된 변수는 타입의 값을 위한 저장소를 제공하고 값을 설정 및 조회함을 허락한다. 전역상수와 변수는 지연 저장된 프로퍼티와 유사하게 항상... Swift Docs@property@property 10-1. 프로퍼티 개념, 저장된 / 지연저장된 프로퍼티, 계산된 프로퍼티 프로퍼티는 값을 특정 클래스, 구조체, 또는 열거형을 연결한다. 저장된 프로퍼티는 인스턴스의 일부로 상수와 변수값을 저장하고, 계산된 프로퍼티는 값을 저장하는 대신 계산한다. 계산된 프로퍼티는 클래스, 구조체, 열거형에서 제공되고, 저장된 프로퍼티는 클래스와 구조체에서만 제공된다. 또한 프로퍼티 는 타입 자체와도 연결될 수 있는데 이를 타입 프로퍼티라고 한다. 프로퍼티 관찰자(property... Swift Docs@property@property 10-2. 프로퍼티 관찰자(property observer), 프로퍼티 래퍼 프로퍼티 관찰자는 프로퍼티 값이 변경되는지 관찰하고 응답한다. 이는 현재 값이 새로운 값과 같아도 값이 설정되는 시기에 호출된다. 다음의 경우에 관찰자 추가가 가능하다. 정의한 저장된 프로퍼티 상속 저장된 프로퍼티 상속 계산된 프로퍼티 프로퍼티 관찰자 정의는 2가지 선택사항이 있으며, willSet과 didSet이 있다. willSet은 값이 저장되기 직전에 호출된다. 상수 파라미터로 새로운... Swift Docs@property@property 11. 메서드(Method) 메서드는 특정 타입과 연관된 함수이다. 클래스, 구조체, 열거형은 주어진 타입의 인스턴스 동작을 위한 특정작업과 기능을 지원하는 메서드를 정의할 수 있다. 그리고 이들은 또한 타입 자체와 연관된 타입 메서드 정의도 가능하다. 인스턴스 메서드는 특정 클래스, 구조체, 열거형의 인스턴스에 속하는 함수이다. 인스턴스 메서드는 함수에서 설명한대로 함수구문과 완벽하게 동일하다. 타입의 모든 인스턴스는... Swift DocsmethodSwift Docs 13-1. 초기화 개념, 기본 초기화(initialization) 초기화는 인스턴스의 클래스, 구조체 또는 열거형을 사용하기 위해 준비하는 단계를 의미한다. 이 단계에서는 인스턴스에 저장된 프로퍼티에 초기값을 설정해주고, 새로운 인스턴스가 사용할 준비가 되기 전 다른 설정이나 초기화를 수행하는 것을 포함한다. 초기화 구문은 특정 타입의 새로운 인스턴스를 생성하기 위해 호출된다. 새로운 구조체의 정의간 사용하는 초기화 구문의 예시는 다음과 같다. 이는 클래스... Swift DocsInitializationInitialization 16. 에러 처리(Error handling, defer) 에러처리는 프로그램의 에러 조건에서 응답하고 대응하는 프로세스이다. 작업이 실패할 경우 코드가 그에 따라서 응답하도록 에러의 원인을 이해하는 것이 유용한 경우가 많고, 이를 위해서 에러핸들링을 사용한다. 열거형은 관련된 에러의 조건을 모델링하는데 매우 적합하며, 관련 값을 통해 에러의 특성 및 정보를 유저에게 전달할 수 있다. 에러가 발생할때는 문제를 수정하거나 다른방법을 시도하거나, 사용자... Swift Docserror handlingSwift Docs 13-2. 값 타입에 대한 초기화, 클래스에 대한 초기화(1) 구조체 타입은 클로저 내 초기화 구문을 정의하지 않을 경우, 자동으로 멤버별 초기화 구문을 받는다. 기본 초기화 구문과 다르게 구조체는 기본값을 가지지 않은 저장된 프로퍼티라도 초기화 구문을 받는다. 초기화 구문은 인스턴스의 초기화 부분을 수행하기 위해서 초기화 구문을 호출할 수 있다. 값 타입의 경우 자체 초기화 구문을 작성할 때 값 타입으로부터 다른 초기화 구문 참조를 위하여 self. ... Swift DocsInitializationInitialization 14. 초기화 해제(deinitialization) 초기화 해제 구문은 클래스 인스턴스가 할당 해제되기 전에 즉시 호출된다. 초기화 구문은 init 키워드로 작성하는 것과 유사하게 초기화 해제는 deinit 키워드로 작성한다. 이는 클래스 타입에서만 사용한다. 스위프트는 더 이상 필요하지 않은 경우 자원의 확보를 위해서 인스턴스를 자동으로 할당 해제한다. 스위프트 자동 참조 카운팅(Automatic Reference Counting)에서 설명... Swift DocsDeinitializationDeinitialization 15. 옵셔널 체이닝(Optional chaining) 옵셔널 체이닝은 현재 nil일 수 잇는 옵셔널인 프로퍼티, 메서드 및 서브스크립트를 조회하고 호출하기 위한 프로세스이다. 옵셔널에 값이 있는 경우엔 프로퍼티 및 메서드 등은 호출에 성공한다. 하지만 옵셔널이 nil인 경우엔 프로터피, 메서드 및 서브스크립트 호출은 nil을 반환한다. 여러 조회는 한 줄로 연결 가능하며, 체인에 어느 부분이라도 nil인 경우 전체 체인은 실패한다. 옵셔널 체이... Swift Docsoptional chainingSwift Docs 12. 상속(inheritance) 클래스는 다른 클래스에서 메서드, 프로퍼티, 그리고 다른 특성을 상속 가능하다. 클래스가 다른 클래스에서 상속될 때 상속하는 클래스를 하위 클래스라고 하고(subclass), 상속된 클래스를 상위 클래스(superclass)라고 한다. 스위프트에서 클래스는 상위 클래스에 속하는 메서드, 프로퍼티, 서브스크립트 접근이 가능하며 이들을 동작 수정하기 위해 재정의한 버전을 제공가능하다. 다른 클래... Swift DocsinheritanceSwift Docs 3-2. 문자(Character) 이번 항에서 다루는 내용은 문자(Character)에 대한 항목이다. 문자열(String) 은 다항의 문자(Character)로 구성되어 있다고 생각하면 편할 것이다. 문자열과 for루프를 통해 String의 각각의 Character값에 접근이 가능하다. 하나의 문자열 리터럴에 대해서는 단독의 Character타입의 상수 또는 변수 생성이 가능하다. String값은 초기화 인자로 Charac... Swift DocsString and CharacterString and Character 4-1. 배열(Collection - Array) 스위프트는 값을 저장하기 위한 array, set, dictionary 3가지의 원시적 콜렉션 타입을 제공한다. Array는 컬력센 값에 순서를 가지고 있다. Set은 반복되지 않은 값에 순서가 없는 컬렉션이다. 마지막으로 딕셔너리는 키-값 쌍의 순서가 없는 컬렉션이다. 배열타입의 구문은 Array로 작성한다. 또한 [Element] 형식으로도 작성이 가능하다. 빈 배열의 생성은 초기화 구문... Swift DocsCollectionCollection 2. 각종 연산자(Operator) 연산자는 값을 체크, 변경, 결합하기 위해 사용하는 기호나 구이다. 1. 연산자는 단항(unary), 이항(binary), 삼항(teranry)연산자로 구분된다. 1. 대입 연산자, a = b는 b의 값으로 초기화 되거나 업데이트 한다. 1. 스위프트는 모든 숫자타입에 대해서 4개(덧셈, 뺄셈, 곱셈, 나눗셈)의 기본 산술연산자를 제공한다. 2. 덧셈 연산자는 문자열의 덧셈도 지원한다. 1.... Basic OperatorSwift DocsBasic Operator
17. 타입 캐스팅(Type Casting) 타입 캐스팅은 인스턴스 타입을 확인하거나 해당 인스턴스를 자체 클래스에서 다른 상위 클래스나 하위 클래스로 취급하는 방법이다. 타입캐스팅을 사용하여 프로토콜을 준수하는지 확인도 가능하다. 클래스와 하위 클래스의 계층도 타입 캐스팅을 사용해서 특정 클래스의 인스턴스 타입을 확인하고 같은 계층 내에서 다른 클래스로 인스턴스 캐스트도 가능하다. 인스턴스가 특정 하위 클래스 타입인지 확인하기 위해서... Swift DocsType CastingSwift Docs 8-2. 연관된 값, 원시 값, 재귀 열거형 경우에 따라서 케이스 값과 함께 다른 타입의 값을 저장할 수 있는 것이 유용할 때가 있다. 이를 연관된 값이라고 하고 케이스를 코드에서 값으로 사용할때마다 달라진다. 아래 예시코드를 통해 확인한다. 위의 연관된 값(Associated Values)는 열거형 케이스에 다른 타입의 연관된 값을 저장한다고 선언하는 방법을 보여줬다. 이에 대한 다른 방법으로 열거형 케이스는 모두 동일한 타입의 기본... Swift DocsEnumerationsEnumerations 9-1. 구조체와 클래스 비교, 구조체 개념(struct) 구조체와 클래스는 프로그램 코드의 구성요소가 되는 범용 구조이다. 상수, 변수, 그리고 함수를 정의하는 것과 같은 구문을 사용해서 구조체와 클래스에 프로퍼티와 메서드를 기능적으로 추가할 수 있다. 스위프트에서 클래스는 객체보다 좀 더 일반적인 인스턴스라는 용어를 사용한다. 스위프트에서 구조체와 클래스는 공통점이 많다. 값을 저장하는 프로퍼티 정의(Property) 기능 제공을 위한 메서드 정... Swift DocsstructSwift Docs 9-2. 클래스(class) 클래스는 참조타입이다. 값 타입과 반대로 참조타입은 변수 또는 상수에 할당되거나 함수로 전달될 때 복사되지 않는다. 복사본 대신 존재하는 같은 인스턴스에 대한 참조가 사용된다. 클래스는 참조 타입이므로 클래스의 같은 단일 인스턴스에 참조하는 여러개의 상수와 변수가 가능하다. 구조체와 열거형은 상수, 변수 및 함수에 전달될 때 항상 복사되므로 클래스와 다르다. 상수들이 같은 인스턴스를 참조하는... Swift DocsclassSwift Docs 10-3. 전역과 지역변수(Global and Local Variables) 프로퍼티를 계산하고 관찰하기 위해 이전에 설명한 기능들은 전역변수와 지역변수에서도 사용 가능하다. 전역변수는 함수, 메서드, 클로저, 또는 타입 컨텍스트의 외부에 정의된 변수이다. 지역변수는 함수, 메서드 등의 내부에 정의된 변수이다. 저장된 프로퍼티처럼 저장된 변수는 타입의 값을 위한 저장소를 제공하고 값을 설정 및 조회함을 허락한다. 전역상수와 변수는 지연 저장된 프로퍼티와 유사하게 항상... Swift Docs@property@property 10-1. 프로퍼티 개념, 저장된 / 지연저장된 프로퍼티, 계산된 프로퍼티 프로퍼티는 값을 특정 클래스, 구조체, 또는 열거형을 연결한다. 저장된 프로퍼티는 인스턴스의 일부로 상수와 변수값을 저장하고, 계산된 프로퍼티는 값을 저장하는 대신 계산한다. 계산된 프로퍼티는 클래스, 구조체, 열거형에서 제공되고, 저장된 프로퍼티는 클래스와 구조체에서만 제공된다. 또한 프로퍼티 는 타입 자체와도 연결될 수 있는데 이를 타입 프로퍼티라고 한다. 프로퍼티 관찰자(property... Swift Docs@property@property 10-2. 프로퍼티 관찰자(property observer), 프로퍼티 래퍼 프로퍼티 관찰자는 프로퍼티 값이 변경되는지 관찰하고 응답한다. 이는 현재 값이 새로운 값과 같아도 값이 설정되는 시기에 호출된다. 다음의 경우에 관찰자 추가가 가능하다. 정의한 저장된 프로퍼티 상속 저장된 프로퍼티 상속 계산된 프로퍼티 프로퍼티 관찰자 정의는 2가지 선택사항이 있으며, willSet과 didSet이 있다. willSet은 값이 저장되기 직전에 호출된다. 상수 파라미터로 새로운... Swift Docs@property@property 11. 메서드(Method) 메서드는 특정 타입과 연관된 함수이다. 클래스, 구조체, 열거형은 주어진 타입의 인스턴스 동작을 위한 특정작업과 기능을 지원하는 메서드를 정의할 수 있다. 그리고 이들은 또한 타입 자체와 연관된 타입 메서드 정의도 가능하다. 인스턴스 메서드는 특정 클래스, 구조체, 열거형의 인스턴스에 속하는 함수이다. 인스턴스 메서드는 함수에서 설명한대로 함수구문과 완벽하게 동일하다. 타입의 모든 인스턴스는... Swift DocsmethodSwift Docs 13-1. 초기화 개념, 기본 초기화(initialization) 초기화는 인스턴스의 클래스, 구조체 또는 열거형을 사용하기 위해 준비하는 단계를 의미한다. 이 단계에서는 인스턴스에 저장된 프로퍼티에 초기값을 설정해주고, 새로운 인스턴스가 사용할 준비가 되기 전 다른 설정이나 초기화를 수행하는 것을 포함한다. 초기화 구문은 특정 타입의 새로운 인스턴스를 생성하기 위해 호출된다. 새로운 구조체의 정의간 사용하는 초기화 구문의 예시는 다음과 같다. 이는 클래스... Swift DocsInitializationInitialization 16. 에러 처리(Error handling, defer) 에러처리는 프로그램의 에러 조건에서 응답하고 대응하는 프로세스이다. 작업이 실패할 경우 코드가 그에 따라서 응답하도록 에러의 원인을 이해하는 것이 유용한 경우가 많고, 이를 위해서 에러핸들링을 사용한다. 열거형은 관련된 에러의 조건을 모델링하는데 매우 적합하며, 관련 값을 통해 에러의 특성 및 정보를 유저에게 전달할 수 있다. 에러가 발생할때는 문제를 수정하거나 다른방법을 시도하거나, 사용자... Swift Docserror handlingSwift Docs 13-2. 값 타입에 대한 초기화, 클래스에 대한 초기화(1) 구조체 타입은 클로저 내 초기화 구문을 정의하지 않을 경우, 자동으로 멤버별 초기화 구문을 받는다. 기본 초기화 구문과 다르게 구조체는 기본값을 가지지 않은 저장된 프로퍼티라도 초기화 구문을 받는다. 초기화 구문은 인스턴스의 초기화 부분을 수행하기 위해서 초기화 구문을 호출할 수 있다. 값 타입의 경우 자체 초기화 구문을 작성할 때 값 타입으로부터 다른 초기화 구문 참조를 위하여 self. ... Swift DocsInitializationInitialization 14. 초기화 해제(deinitialization) 초기화 해제 구문은 클래스 인스턴스가 할당 해제되기 전에 즉시 호출된다. 초기화 구문은 init 키워드로 작성하는 것과 유사하게 초기화 해제는 deinit 키워드로 작성한다. 이는 클래스 타입에서만 사용한다. 스위프트는 더 이상 필요하지 않은 경우 자원의 확보를 위해서 인스턴스를 자동으로 할당 해제한다. 스위프트 자동 참조 카운팅(Automatic Reference Counting)에서 설명... Swift DocsDeinitializationDeinitialization 15. 옵셔널 체이닝(Optional chaining) 옵셔널 체이닝은 현재 nil일 수 잇는 옵셔널인 프로퍼티, 메서드 및 서브스크립트를 조회하고 호출하기 위한 프로세스이다. 옵셔널에 값이 있는 경우엔 프로퍼티 및 메서드 등은 호출에 성공한다. 하지만 옵셔널이 nil인 경우엔 프로터피, 메서드 및 서브스크립트 호출은 nil을 반환한다. 여러 조회는 한 줄로 연결 가능하며, 체인에 어느 부분이라도 nil인 경우 전체 체인은 실패한다. 옵셔널 체이... Swift Docsoptional chainingSwift Docs 12. 상속(inheritance) 클래스는 다른 클래스에서 메서드, 프로퍼티, 그리고 다른 특성을 상속 가능하다. 클래스가 다른 클래스에서 상속될 때 상속하는 클래스를 하위 클래스라고 하고(subclass), 상속된 클래스를 상위 클래스(superclass)라고 한다. 스위프트에서 클래스는 상위 클래스에 속하는 메서드, 프로퍼티, 서브스크립트 접근이 가능하며 이들을 동작 수정하기 위해 재정의한 버전을 제공가능하다. 다른 클래... Swift DocsinheritanceSwift Docs 3-2. 문자(Character) 이번 항에서 다루는 내용은 문자(Character)에 대한 항목이다. 문자열(String) 은 다항의 문자(Character)로 구성되어 있다고 생각하면 편할 것이다. 문자열과 for루프를 통해 String의 각각의 Character값에 접근이 가능하다. 하나의 문자열 리터럴에 대해서는 단독의 Character타입의 상수 또는 변수 생성이 가능하다. String값은 초기화 인자로 Charac... Swift DocsString and CharacterString and Character 4-1. 배열(Collection - Array) 스위프트는 값을 저장하기 위한 array, set, dictionary 3가지의 원시적 콜렉션 타입을 제공한다. Array는 컬력센 값에 순서를 가지고 있다. Set은 반복되지 않은 값에 순서가 없는 컬렉션이다. 마지막으로 딕셔너리는 키-값 쌍의 순서가 없는 컬렉션이다. 배열타입의 구문은 Array로 작성한다. 또한 [Element] 형식으로도 작성이 가능하다. 빈 배열의 생성은 초기화 구문... Swift DocsCollectionCollection 2. 각종 연산자(Operator) 연산자는 값을 체크, 변경, 결합하기 위해 사용하는 기호나 구이다. 1. 연산자는 단항(unary), 이항(binary), 삼항(teranry)연산자로 구분된다. 1. 대입 연산자, a = b는 b의 값으로 초기화 되거나 업데이트 한다. 1. 스위프트는 모든 숫자타입에 대해서 4개(덧셈, 뺄셈, 곱셈, 나눗셈)의 기본 산술연산자를 제공한다. 2. 덧셈 연산자는 문자열의 덧셈도 지원한다. 1.... Basic OperatorSwift DocsBasic Operator